package com.opal.system.service;

import com.opal.system.entity.table.OpalPermission;
import com.opal.system.entity.table.OpalRole;

import java.util.List;
import java.util.Set;

public interface OpalPermissionService {

	/**
	 * 查询所有的权限数据
	 * @return
	 */
	public List<OpalPermission> selectOpalPermission();

	/**
	 * 根据相应的条件查询权限数据
	 * @param opalPermission (不包括id、时间属性) 根据对象中属性不为null的为条件查询
	 * @return
	 */
	List<OpalPermission> selectOpalPermissionByCondition(OpalPermission opalPermission);

	/**
	 * 根据权限id删除权限
	 * @param id
	 * @return
	 */
	int deleteOpalPermissionById(Long id);

	/**
	 * 根据主键id修改权限数据
	 * @param opalPermission (不包括id、时间属性) 根据对象中属性不为null的为条件查询
	 * @return
	 */
	int updateOpalPermissionById(OpalPermission opalPermission);

	/**
	 * 根据相应的条件修改权限数据
	 * @param opalPermissionCondition where条件(不包括id、时间属性) 根据对象中属性不为null的值为条件查询
	 * @param opalPermission 要修改的值
	 * @return
	 */
	int updateOpalPermissionByCondition(OpalPermission opalPermission,OpalPermission opalPermissionCondition);

	/**
	 * 根据相应的条件删除权限数据
	 * @param opalPermission (不包括id) 根据对象中属性不为null的为条件查询
	 * @return
	 */
	int deleteOpalPermissionByCondition(OpalPermission opalPermission);

	/**
	 * 根据角色id为条件来修改权限表中的角色id为空   ----删除角色信息的时候需要清空相对应权限表的属性角色id
	 * @param roleId
	 * @return
	 */
	int updateOpalPermissionByRoleId(Long roleId);
	
	/**
	 * 根据角色id获取权限
	 * @param opalRoles
	 * @return
	 */
	public Set<String> getByRoleIdListPermissions(List<OpalRole> opalRoles);

	
	/**
	 * 根据角色id获取列表OpalPermission对象
	 * @param roleId
	 * @return
	 */
//	List<OpalPermission> getByRoleIdListOpalPermission(Long roleId);

}
